\myparagraph{GCC}

GCC 4.4.1 (с опцией \Othree) генерирует похожий код, хотя и с некоторой разницей:

\lstinputlisting[caption=\Optimizing GCC 4.4.1,style=customasmx86]{patterns/12_FPU/1_simple/GCC_RU.asm}

Разница в том, что в стек сначала заталкивается 3,14 (в \ST{0}), а затем значение 
из \GTT{arg\_0} делится на то, что лежит в регистре \ST{0}.

\myindex{x86!\Instructions!FDIVR}
\FDIVR означает \IT{Reverse Divide}~--- делить, поменяв делитель и делимое местами. 
Точно такой же инструкции для умножения нет, потому что она была бы бессмысленна (ведь умножение 
операция коммутативная), так что остается только \FMUL без соответствующей ей \GTT{-R} инструкции.

\myindex{x86!\Instructions!FADDP}
\FADDP не только складывает два значения, но также и выталкивает из стека одно значение. 
После этого в \ST{0} остается только результат сложения.
